﻿var PaqueteTrabajo_Controller =
{
    InitGrid:
    function PaqueteTrabajo_Controller_InitGrid() 
    {
        var grid =
        {
            Target: "divGridTareas",
            TableId: "gridTareas",
            PrimaryKey: "Id",
            Fields:
            [
                { Header: "Codigo Cuenta", DataField: "CodigoCuenta", Width: "100px", StyleCss: CssWeb.FormatText },
                { Header: "Nombre", DataField: "Nombre", StyleCss: CssWeb.FormatText },
                { Header: "Tipo", DataField: "TipoPaqueteTrabajo", Width: "140px", StyleCss: CssWeb.FormatText },
                { Header: "Responsable", DataField: "UsuarioResponsable", Width: "140px", StyleCss: CssWeb.FormatText},
                { Header: "Asignado a", DataField: "UsuarioAsignado", Width: "140px", StyleCss: CssWeb.FormatText },
                { Header: "(%) Avance", DataField: "PorcentajeAvance_Format", Width: "80px", StyleCss: CssWeb.FormatCenter, OrderBy: "PorcentajeAvance"},
                { Header: "Fecha Inicio <br/> Proyectado", DataField: "FechaInicioProyectado", Width: "90px", StyleCss: CssWeb.FormatCenter},
                { Header: "Fecha Fin <br/> Proyectado", DataField: "FechaFinProyectado", Width: "90px", StyleCss: CssWeb.FormatCenter},
                { Header: "Fecha Inicio <br/> Real", DataField: "FechaInicioReal", Width: "90px", StyleCss: CssWeb.FormatCenter},
                { Header: "Fecha Fin <br/> Real", DataField: "FechaFinReal", Width: "90px", StyleCss: CssWeb.FormatCenter},
                { Header: "Estado", DataField: "EstadoPaqueteTrabajo", Width: "120px", StyleCss: CssWeb.FormatText }
            ],
            ShowPaging: DatosControles.GridJSON_ShowPagging,
            ChooseShowPaging: DatosControles.GridJSON_ChoosePagging,
            TotalRecords: 0,
            PageIndex: 1,
            OrderBy: "CodigoCuenta",
            FunctionLoadGrid: PaqueteTrabajo_Controller.ListarGridJSON,
            FunctionExportToExcel: PaqueteTrabajo_Controller.ExportarExcelGrid,
            ButtonsActionRecord:
            [
                { styleCss: CssWeb.GridJSON_IconEdit, toolTip: DatosControles.GridJSON_ToolTipEditar, functionAction: function(id) { Global_UI.ResponseRedirect("RegistrarTarea.aspx?Id=" + id); } }
            ]
        };

        PaqueteTrabajo_Controller.Grid = grid;
    },

    Grid: {},

    GetRecordSearch:
    function PaqueteTrabajo_Controller_GetRecordSearch()
    {
        if (!Global_UI.ValidationGroupJquery("formConsultarTareas")) return null;

        if (!Global_UI.ValidarRangoFechas("txtFechaInicio","txtFechaFin"))  return null;

        var registroBusqueda = 
        {
            ProyectoId: null, 
            CodigoCuenta: $("#txtCodigoCuenta").val().trim(),
            Nombre: $("#txtNombre").val().trim(),
            TipoPaqueteTrabajoId: $("#ddlTipoPaqueteTrabajo").val(),
            EstadoPaqueteTrabajoId: $("#ddlEstadoPaqueteTrabajo").val(),
            UsuarioResponsableId: $("#ddlUsuarioResponsable").val(),
            UsuarioAsignadoId: $("#ddlUsuarioAsignado").val(),
            TipoBusquedaFecha: $("#ddlFecha").val(),
            FechaInicioProyectado: $("#txtFechaInicio").val().trim(),
            FechaFinProyectado: $("#txtFechaFin").val().trim()
        };

        return registroBusqueda;
    },

    ListarGridJSON:
    function PaqueteTrabajo_Controller_ListarGridJSON(orderBy, cantidadMostrar, paginaActual) 
    {
        PaqueteTrabajo_Controller.Grid.ChooseShowPaging = cantidadMostrar;
        PaqueteTrabajo_Controller.Grid.PageIndex = paginaActual;
        PaqueteTrabajo_Controller.Grid.OrderBy = orderBy;

        PaqueteTrabajo_Controller.ListarGridPaging();
    },

    ListarGridPaging:
    function PaqueteTrabajo_Controller_ListarGridPaging() 
    {
        var registroBusqueda = PaqueteTrabajo_Controller.GetRecordSearch();

        if(registroBusqueda == null) return;

        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "ConsultarTareas.aspx/Listar",
            JSON.stringify
            ({
                registroBusqueda: registroBusqueda,
                paginaActual: PaqueteTrabajo_Controller.Grid.PageIndex,
                cantidadMostrar: PaqueteTrabajo_Controller.Grid.ChooseShowPaging,
                orderBy: PaqueteTrabajo_Controller.Grid.OrderBy
            }),
            PaqueteTrabajo_Controller.ListarGridPaging_CallBack
        );
    },

    ListarGridPaging_CallBack:
    function PaqueteTrabajo_Controller_ListarGridPaging_CallBack(response) 
    {
        var view = response.d;

        PaqueteTrabajo_Controller.Grid.TotalRecords = view.TotalRegistros;
        GridJSON.DataBind(PaqueteTrabajo_Controller.Grid, view.PaquetesTrabajo);

        Global_UI.BlockUI(false);
    },

    ExportarExcelGrid:
    function PaqueteTrabajo_Controller_ExportarExcelGrid() 
    {
        var registroBusqueda = PaqueteTrabajo_Controller.GetRecordSearch();

        if(registroBusqueda == null) return;

        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "ConsultarTareas.aspx/ExportarExcel",
            JSON.stringify
            ({
                registroBusqueda: registroBusqueda,
                gridFields: PaqueteTrabajo_Controller.Grid.Fields
            }),
            PaqueteTrabajo_Controller.ExportarExcelGrid_CallBack
        );
    },

    ExportarExcelGrid_CallBack:
    function PaqueteTrabajo_Controller_ExportarExcelGrid_CallBack(response) 
    {
        Global_UI.MostrarExportacionExcel(response.d);

        Global_UI.BlockUI(false);
    },

    ListarEstadosPaqueteTrabajo:
    function PaqueteTrabajo_Controller_ListarEstadosPaqueteTrabajo() 
    {
        Global_UI.BlockUI(true);

        var tipoPaqueteTrabajoId = $("#ddlTipoPaqueteTrabajo").val();

        if(tipoPaqueteTrabajoId == "") tipoPaqueteTrabajoId = "0";

        Global_UI.AjaxPOST
        (
            "ConsultarTareas.aspx/ListarEstadosPaqueteTrabajo",
            JSON.stringify
            ({
                tipoPaqueteTrabajoId: tipoPaqueteTrabajoId
            }),
            PaqueteTrabajo_Controller.ListarEstadosPaqueteTrabajo_CallBack
        );
    },

    ListarEstadosPaqueteTrabajo_CallBack:
    function PaqueteTrabajo_Controller_ListarEstadosPaqueteTrabajo_CallBack(response) 
    {
        var estados = response.d;

        Global_UI.ConstructSelectList("ddlEstadoPaqueteTrabajo",estados,null,null,DatosControles.Dato_Todos);
    
        Global_UI.BlockUI(false);
    },

    Editar:
    function PaqueteTrabajo_Controller_Editar(id) 
    {
        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "RegistrarTarea.aspx/Editar",
            JSON.stringify
            ({
                id: id
            }),
            PaqueteTrabajo_Controller.Editar_CallBack
        );
    },

    Editar_CallBack:
    function PaqueteTrabajo_Controller_Editar_CallBack(response) 
    {
        var view = response.d;
    
        $("#hiddenPaqueteTrabajoId").val(view.PaqueteTrabajo.Id);
        $("#lblCodigoCuenta").html(view.PaqueteTrabajo.CodigoCuenta);
        $("#lblNombre").html(view.PaqueteTrabajo.Nombre);
        $("#lblTipoPaqueteTrabajo").html(view.PaqueteTrabajo.TipoPaqueteTrabajo);
        $("#lblUsuarioResponsable").html(view.PaqueteTrabajo.UsuarioResponsable);
        $("#hiddenUsuarioAsignadoId").val(view.PaqueteTrabajo.UsuarioAsignadoId);
        $("#lblUsuarioAsignado").html(view.PaqueteTrabajo.UsuarioAsignado);
        $("#lblEstadoPaqueteTrabajo").html(view.PaqueteTrabajo.EstadoPaqueteTrabajo);
        $("#hiddenEstadoPaqueteTrabajoId").val(view.PaqueteTrabajo.EstadoPaqueteTrabajoId);

        $("#lblPorcentajeAvance").html(view.PaqueteTrabajo.PorcentajeAvance_Format);
        $("#lblFechaInicioProyectado").html(view.PaqueteTrabajo.FechaInicioProyectado);
        $("#lblFechaFinProyectado").html(view.PaqueteTrabajo.FechaFinProyectado);
        $("#lblFechaInicioReal").html(view.PaqueteTrabajo.FechaInicioReal);
        $("#lblFechaFinReal").html(view.PaqueteTrabajo.FechaFinReal);

        Global_UI.BlockUI(false);

        //Listo los demas Tabs
        Actividad_Controller.ListarGridPaging();
        DocumentoPaqueteTrabajo_Controller.ListarGridPaging();
        ComentarioPaqueteTrabajo_Controller.ListarGridPaging();
        InteresadoPaqueteTrabajo_Controller.ListarGridPaging();
        HistorialEstadoPaqueteTrabajo_Controller.ListarGridPaging();
    },

    //Workflow
    ContinuarWorkflow:
    function PaqueteTrabajo_Controller_ContinuarWorkflow() 
    {
        Global_UI.BlockUI(true);

        var usuarioAsignado = $("#hiddenUsuarioAsignadoId").val();

        if(usuarioAsignado=="") PaqueteTrabajo_Controller.TransicionUsuarios();
        else PaqueteTrabajo_Controller.TransicionEstados();
    },


    ContinuarSeleccionarEstado:
    function PaqueteTrabajo_Controller_ContinuarSeleccionarEstado() 
    {
        if (!Global_UI.ValidationGroupJquery("dialogSeleccionarEstado")) return false;

        var seleccion = $("#ddlEstadoPaqueteTrabajo").val();
        $("#hiddenSiguienteEstadoPaqueteTrabajoId").val(seleccion);

        Global_UI.CloseDialog("dialogSeleccionarEstado");

        PaqueteTrabajo_Controller.TransicionUsuarios();
    },

    ContinuarSeleccionarUsuario:
    function PaqueteTrabajo_Controller_ContinuarSeleccionarUsuario() 
    {
        if (!Global_UI.ValidationGroupJquery("dialogSeleccionarUsuarioAsignado")) return false;

        var seleccionUsuarioAsignado = $("#ddlUsuarioAsignado").val();
        $("#hiddenSiguienteUsuarioAsignadoId").val(seleccionUsuarioAsignado);

        var usuarioAsignado = $("#hiddenUsuarioAsignadoId").val();

        if(usuarioAsignado=="") PaqueteTrabajo_Controller.IniciarWorkflow();
        else PaqueteTrabajo_Controller.TransicionDocumentos();
    },

    ContinuarTransicionDocumentos:
    function PaqueteTrabajo_Controller_ContinuarTransicionDocumentos() 
    {
        Global_UI.CloseDialog("dialogDocumentosTransicion");
        $("#gridDocumentosTransicion").remove();
        
        Global_UI.JqueryModalFormOpen("dialogComentarioFinalizar");

        $("#txtComentarioFinalizar").val("");
        $("#txtComentarioFinalizar").focus();
    },

    ContinuarComentarioFinalizar:
    function PaqueteTrabajo_Controller_ContinuarComentarioFinalizar() 
    {
        Global_UI.BlockUI(true);

        var registro =
        {
            Id: "0",
            EstadoPaqueteTrabajoOrigenId: $("#hiddenEstadoPaqueteTrabajoId").val(),
            EstadoPaqueteTrabajoDestinoId: $("#hiddenSiguienteEstadoPaqueteTrabajoId").val(),
            PaqueteTrabajoId: $("#hiddenPaqueteTrabajoId").val(),
            Comentario: $("#txtComentarioFinalizar").val(),
            UsuarioAsignadoId : $("#hiddenSiguienteUsuarioAsignadoId").val()
        };

        Global_UI.AjaxPOST
        (
            "RegistrarTarea.aspx/RegistrarComentarioFinalizar",
            JSON.stringify
            ({
                registro : registro
            }),
            PaqueteTrabajo_Controller.ContinuarComentarioFinalizar_CallBack
        );
    },

    ContinuarComentarioFinalizar_CallBack:
    function PaqueteTrabajo_Controller_ContinuarComentarioFinalizar_CallBack(response) 
    {
        Global_UI.CloseDialog("dialogComentarioFinalizar");

        var id = response.d;

        Global_UI.BlockUI(false);

        Global_UI.Alert("La tarea a continuado al siguiente estado",MensajesUsuario.TituloSistema,function() { Global_UI.BlockUI(true); Global_UI.ResponseRedirect("RegistrarTarea.aspx?Id=" + id); });
    },

    IniciarWorkflow:
    function PaqueteTrabajo_Controller_IniciarWorkflow() 
    {
        Global_UI.BlockUI(true);

        var registro =
        {
            Id : $("#hiddenPaqueteTrabajoId").val(),
            UsuarioAsignadoId : $("#hiddenSiguienteUsuarioAsignadoId").val()
        };

        Global_UI.AjaxPOST
        (
            "RegistrarTarea.aspx/IniciarWorkflow",
            JSON.stringify
            ({
                registro : registro
            }),
            PaqueteTrabajo_Controller.IniciarWorkflow_CallBack
        );
    },

    IniciarWorkflow_CallBack:
    function PaqueteTrabajo_Controller_IniciarWorkflow_CallBack(response) 
    {
        Global_UI.CloseDialog("dialogSeleccionarUsuarioAsignado");

        var id = response.d;

        Global_UI.BlockUI(false);

        Global_UI.Alert("Se dara inicio a la tarea",MensajesUsuario.TituloSistema,function() { Global_UI.BlockUI(true); Global_UI.ResponseRedirect("RegistrarTarea.aspx?Id=" + id); });
    },

    TransicionDocumentos:
    function PaqueteTrabajo_Controller_TransicionDocumentos() 
    {
        Global_UI.CloseDialog("dialogSeleccionarUsuarioAsignado");

        Global_UI.JqueryModalFormOpen("dialogDocumentosTransicion");

        DocumentoPaqueteTrabajo_Controller.ListarGridTransicion();
    },

    TransicionEstados:
    function PaqueteTrabajo_Controller_TransicionEstados() 
    {
        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "RegistrarTarea.aspx/TransicionEstados",
            JSON.stringify
            ({
                estadoPaqueteTrabajoId : $("#hiddenEstadoPaqueteTrabajoId").val()
            }),
            PaqueteTrabajo_Controller.TransicionEstados_CallBack
        );
    },

    TransicionEstados_CallBack:
    function PaqueteTrabajo_Controller_TransicionEstados_CallBack(response) 
    {
        Global_UI.JqueryModalFormOpen("dialogSeleccionarEstado");

        var estados = response.d;

        Global_UI.ConstructSelectList("ddlEstadoPaqueteTrabajo",estados,null,null,DatosControles.Dato_Seleccionar);
    
        Global_UI.BlockUI(false);
    },

    TransicionUsuarios:
    function PaqueteTrabajo_Controller_TransicionUsuarios() 
    {
        Global_UI.BlockUI(true);
        
        var estadoPaqueteTrabajoId = $("#hiddenSiguienteEstadoPaqueteTrabajoId").val();

        if(estadoPaqueteTrabajoId == "") estadoPaqueteTrabajoId = $("#hiddenEstadoPaqueteTrabajoId").val();

        Global_UI.AjaxPOST
        (
            "RegistrarTarea.aspx/TransicionUsuarios",
            JSON.stringify
            ({
                estadoPaqueteTrabajoId : estadoPaqueteTrabajoId 
            }),
            PaqueteTrabajo_Controller.TransicionUsuarios_CallBack
        );
    },

    TransicionUsuarios_CallBack:
    function PaqueteTrabajo_Controller_TransicionUsuarios_CallBack(response) 
    {
        Global_UI.JqueryModalFormOpen("dialogSeleccionarUsuarioAsignado");

        var usuarios = response.d;

        Global_UI.ConstructSelectList("ddlUsuarioAsignado",usuarios,null,null,DatosControles.Dato_Seleccionar);
    
        Global_UI.BlockUI(false);
    }
};

var ConsultarTareas_ASPX =
{
    Load:
    function ConsultarTareas_ASPX_Load() 
    {
        Global_UI.BlockUI(true);

        var txtCodigoCuenta = $("#txtCodigoCuenta");
        txtCodigoCuenta.attr("regularexpression",RegularExpression.CodigoCuenta);

        var txtFechaInicio = $("#txtFechaInicio");
        txtFechaInicio.attr("regularexpression",RegularExpression.Fecha);
        txtFechaInicio.attr("messageregex",MensajesUsuario.FechaInvalida);
        Global_UI.Datepicker(txtFechaInicio.attr("id"));

        var txtFechaFin = $("#txtFechaFin");
        txtFechaFin.attr("regularexpression",RegularExpression.Fecha);
        txtFechaFin.attr("messageregex",MensajesUsuario.FechaInvalida);
        Global_UI.Datepicker(txtFechaFin.attr("id"));

        $("#ddlTipoPaqueteTrabajo").change(function () { PaqueteTrabajo_Controller.ListarEstadosPaqueteTrabajo(); });

        $("#btnConsultar").click(function () { PaqueteTrabajo_Controller.ListarGridPaging(); });
        $("#btnNuevo").click(function () { Global_UI.BlockUI(true); Global_UI.ResponseRedirect("RegistrarTarea.aspx"); });

        PaqueteTrabajo_Controller.InitGrid();
        PaqueteTrabajo_Controller.ListarGridPaging();
    }       
}

var RegistrarTarea_ASPX =
{
    Load:
    function RegistrarTarea_ASPX_Load() 
    {         
        Global_UI.BlockUI(true);

        $("#tabsTarea").tabs();

        $("#btnGrabarComentario").click(function() { ComentarioPaqueteTrabajo_Controller.GrabarRegistro(); });
        $("#btnContinuarPaqueteTrabajo").click(function() { PaqueteTrabajo_Controller.ContinuarWorkflow(); });
        $("#btnContinuarEstado").click(function() { PaqueteTrabajo_Controller.ContinuarSeleccionarEstado(); });
        $("#btnContinuarUsuario").click(function() { PaqueteTrabajo_Controller.ContinuarSeleccionarUsuario(); });
        $("#btnContinuarDocumentosTransicion").click(function() { PaqueteTrabajo_Controller.ContinuarTransicionDocumentos(); });
        $("#btnComentarioFinalizar").click(function() { PaqueteTrabajo_Controller.ContinuarComentarioFinalizar(); });
        

        //Inicializo modales
        Global_UI.JqueryModalForm("dialogComentariosPaqueteTrabajo", 280, 900);
        Global_UI.JqueryModalForm("dialogRecursoActividad", 680, 1000, function () { RecursoActividad_Controller.Grid = null; $("#gridRecursoActividad").remove(); });
        Global_UI.JqueryModalForm("dialogSeleccionarEstado", 150, 700);
        Global_UI.JqueryModalForm("dialogSeleccionarUsuarioAsignado", 150, 700);
        Global_UI.JqueryModalForm("dialogDocumentosTransicion", 700, 1000, function () { $("#gridDocumentosTransicion").remove(); });
        Global_UI.JqueryModalForm("dialogComentarioFinalizar", 280, 900);
        

        //Inicio los controladores de los demas TABS que se necesitaran
        Actividad_Controller.InitGrid();
        DocumentoPaqueteTrabajo_Controller.InitGrid();
        ComentarioPaqueteTrabajo_Controller.InitGrid();
        InteresadoPaqueteTrabajo_Controller.InitGrid();
        HistorialEstadoPaqueteTrabajo_Controller.InitGrid();

        //Inicializo los datos del paquete de trabajo
        var id = $("#hiddenPaqueteTrabajoId").val();

        PaqueteTrabajo_Controller.Editar(id);
    }
};